﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestorDeFlotasDesktop.UILogic;
using GestorDeFlotasModelo.Entities;
using GestorDeFlotasModelo.Factorias;
using GestorDeFlotasDesktop.UILogic.Helpers;

namespace GestorDeFlotasDesktop.MejoresAutos
{
    public partial class MejoresAutos : BaseForm
    {
        public MejoresAutos()
        {
            InitializeComponent();
        }

        protected override void OnVisibleChanged(EventArgs e)
        {
            try
            {
                base.OnVisibleChanged(e);
                this.CargarCombos();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void CargarCombos()
        {
            cmbAño.Items.Add("Seleccione un año");
            for (int i = 2005; i <= DateTime.Now.Year; i++)
                cmbAño.Items.Add(i);

            cmbTrimestre.Items.Add("Seleccione un trimestre");
            cmbTrimestre.Items.Add("1° Trimestre");
            cmbTrimestre.Items.Add("2° Trimestre");
            cmbTrimestre.Items.Add("3° Trimestre");
            cmbTrimestre.Items.Add("4° Trimestre");
        }

        private void btnConsultar_Click(object sender, EventArgs e)
        {
            try
            {
                if (String.IsNullOrEmpty(this.txtDesde.Text) || String.IsNullOrEmpty(this.txtHasta.Text))
                {
                    MessageBox.Show("Debe seleccionar trimestre y año para poder consultar el listado.");
                    return;
                }

                this.CargarAutos();


            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void CargarAutos()
        {
            List<Auto> autos = Transaccion.Factoria<FactoriaAuto>().MejorAuto(txtDesde.Text,txtHasta.Text);
            lblNoItems.Visible = false;
            if (autos.Count > 0)
                SetGridData(autos);
            else
                lblNoItems.Visible = true;
        }

        private void GridCreation()
        {
            dglistado.Columns.Clear();
            dglistado.AutoGenerateColumns = false;
            dglistado.ReadOnly = true;
            dglistado.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            dglistado.MultiSelect = false;
            dglistado.Columns.Add(DataGridViewHelpers.CreateDataGridViewTextBoxColumn("Marca", "Marca"));
            dglistado.Columns.Add(DataGridViewHelpers.CreateDataGridViewTextBoxColumn("Modelo", "Modelo"));
            dglistado.Columns.Add(DataGridViewHelpers.CreateDataGridViewTextBoxColumn("Patente", "Patente"));
            dglistado.Columns.Add(DataGridViewHelpers.CreateDataGridViewTextBoxColumn("Licencia", "Licencia"));
            dglistado.Columns.Add(DataGridViewHelpers.CreateDataGridViewCheckBoxColumn("Recaudacion", "Recaudacion"));
        }
        private void SetGridData(List<Auto> turnos)
        {
            if (turnos != null && turnos.Count > 0)
            {
                dglistado.DataSource = turnos.ConvertAll<AutoProxy>(delegate(Auto a) { return new AutoProxy(a); });
                dglistado.Visible = true;
                //lblNoItems.Visible = false;

            }
            else
            {
                //lblNoItems.Visible = true;
                dglistado.Visible = false;
            }
        }

        private void cmbAño_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.SetearFecha();
        }

        private void SetearFecha()
        {
            try
            {
                if (cmbTrimestre.SelectedIndex == 0 || cmbAño.SelectedIndex == 0)
                    return;

                switch (cmbTrimestre.SelectedIndex)
                {
                    case 1:
                        this.txtDesde.Text = new DateTime(int.Parse(cmbAño.SelectedItem.ToString()), 1, 1).ToShortDateString();
                        this.txtHasta.Text = new DateTime(int.Parse(cmbAño.SelectedItem.ToString()), 3, 31).ToShortDateString();
                        break;
                    case 2:
                        this.txtDesde.Text = new DateTime(int.Parse(cmbAño.SelectedItem.ToString()), 4, 1).ToShortDateString();
                        this.txtHasta.Text = new DateTime(int.Parse(cmbAño.SelectedItem.ToString()), 6, 30).ToShortDateString();
                        break;
                    case 3:
                        this.txtDesde.Text = new DateTime(int.Parse(cmbAño.SelectedItem.ToString()), 7, 1).ToShortDateString();
                        this.txtHasta.Text = new DateTime(int.Parse(cmbAño.SelectedItem.ToString()), 9, 30).ToShortDateString();
                        break;
                    case 4:
                        this.txtDesde.Text = new DateTime(int.Parse(cmbAño.SelectedItem.ToString()), 10, 1).ToShortDateString();
                        this.txtHasta.Text = new DateTime(int.Parse(cmbAño.SelectedItem.ToString()), 12, 31).ToShortDateString();
                        break;

                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void cmbTrimestre_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.SetearFecha();

        }

    }
}
